package com.whfc.fse.dao;

import com.whfc.common.result.ListData;
import com.whfc.fse.dto.FseLiftDTO;
import com.whfc.fse.dto.OpenApiFseLiftDTO;
import com.whfc.fse.entity.FseLift;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface FseLiftMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(FseLift record);

    int insertSelective(FseLift record);

    FseLift selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(FseLift record);

    int updateByPrimaryKey(FseLift record);

    List<FseLiftDTO> selectFseLiftByDeptId(@Param("deptId") Integer deptId,
                                           @Param("keyword") String keyword,
                                           @Param("bindFlag") Integer bindFlag,
                                           @Param("netState") Integer netState);


    List<FseLiftDTO> selectFseLiftList(@Param("deptIds") List<Integer> deptIds,
                                       @Param("bindFlag") Integer bindFlag);


    FseLift selectByDeptIdAndCode(@Param("deptId") Integer deptId,
                                  @Param("code") String code);

    void deleteLogicById(@Param("id") Integer id);

    /**
     * 更新左轿厢设备状态
     *
     * @param liftId
     * @param bindFlag
     * @param sn
     * @param netState
     */
    void updateLeftBindFlag(@Param("liftId") Integer liftId,
                            @Param("bindFlag") Integer bindFlag,
                            @Param("sn") String sn,
                            @Param("netState") Integer netState);

    /**
     * 更新左轿厢设备状态
     *
     * @param liftId
     * @param bindFlag
     * @param sn
     * @param netState
     */
    void updateRightBindFlag(@Param("liftId") Integer liftId,
                             @Param("bindFlag") Integer bindFlag,
                             @Param("sn") String sn,
                             @Param("netState") Integer netState);

    /**
     * 查找升降机数量
     *
     * @param deptIds
     * @param netState
     * @return
     */
    Integer countLiftNum(@Param("deptIds") List<Integer> deptIds,
                         @Param("netState") Integer netState);

    /**
     * 根据SN查找升降机
     *
     * @param platform
     * @param sn
     * @return
     */
    FseLift selectByPlatformAndSn(@Param("platform") String platform,
                                  @Param("sn") String sn);

    /**
     * 更新所有升降机设备网络状态
     *
     * @param netState
     */
    void updateAllDeviceNetState(@Param("netState") Integer netState);

    /**
     * 查询设备列表
     *
     * @param deptId
     * @return
     */
    List<OpenApiFseLiftDTO> selectOpenApiFseLiftByDeptId(Integer deptId);

    /**
     * 查询设备列表
     *
     * @param liftIds
     * @return
     */
    List<FseLift> selectByLiftIds(@Param("liftIds") List<Integer> liftIds);

    /**
     * 更新监控
     *
     * @param liftId     升降机ID
     * @param fvsDevices 监控
     */
    void updateFvsDevices(@Param("liftId") Integer liftId,
                          @Param("fvsDevices") String fvsDevices);

    /**
     * 更新升降机平台
     *
     * @param liftId   升降机ID
     * @param platform 硬件平台
     */
    void updatePlatform(@Param("liftId") Integer liftId,
                        @Param("platform") String platform);

    /**
     * 根据平台获取设备SN
     *
     * @param platform 平台
     * @return 设备SN
     */
    List<FseLift> selectLiftListByPlatform(@Param("platform") String platform);

    List<FseLift> selectByDeptIdAndPlatform(@Param("deptId")Integer deptId, @Param("platform")String platform);
}